home *** CD-ROM | disk | FTP | other *** search
-
- #include <stdio.h>
- #include <osbind.h>
-
- /***************************************************************************
-
- XBLIT.C
-
- - block memory move routines
-
- 09/05/87 created
-
- 03/07/88 15:30
-
- ***************************************************************************/
-
- char *_blit(qfrom, qto)
- register char *qfrom, *qto;
- {
- asm
- {
- lblit:
- move.b (qfrom)+,(qto)+ ; transfer a byte
- bne lblit ; until a zero
- }
- return qto-1;
- }
-
- char *_blitb(qfrom, qto, cb)
- register char *qfrom, *qto;
- register int cb;
- {
- asm
- {
- cmpa qfrom,qto ; if source < dest
- bcc blitbup ; then go copy backwards
-
- subi.w #1,cb ; check if cb==0
- bcs eblitb ; yes, get out
-
- lblitb:
- move.b (qfrom)+,(qto)+
- dbf cb,lblitb
- bra eblitb
-
- blitbup:
- adda.w cb,qfrom ; pointers point to ends of blocks
- adda.w cb,qto
- move.l qto,A1 ; return value
-
- subi.w #1,cb ; check if cb==0
- bcs eblitb
-
- lblitbup:
- move.b -(qfrom),-(qto)
- dbf cb,lblitbup
- move.l A1,qto ; return value
-
- eblitb:
- nop
- }
- return qto;
- }
-
-
- char *_blitbz(qfrom, qto, cb)
- register char *qfrom, *qto;
- register int cb;
- {
- asm
- {
- subi.w #1,cb
- bcs eblitbz
- lblitbz:
- move.b (qfrom)+,(qto)+
- dbf cb,lblitbz
- eblitbz:
- clr.b (qto)
- }
- return qto;
- }
-
- int *_blitw(qfrom, qto, cw)
- register int *qfrom, *qto;
- register int cw;
- {
- asm
- {
- subi.w #1,cw
- bcs eblitw
- lblitw:
- move.w (qfrom)+,(qto)+
- dbf cw,lblitw
- eblitw:
- nop
- }
- return qto;
- }
-
-
- int *_blitwz(qfrom, qto, cw)
- register int *qfrom, *qto;
- register int cw;
- {
- asm
- {
- subi.w #1,cw
- bcs eblitwz
- lblitwz:
- move.w (qfrom)+,(qto)+
- dbf cw,lblitwz
- eblitwz:
- clr.b (qto)
- }
- return qto;
- }
-
- long *_blitl(qfrom, qto, cl)
- register long *qfrom, *qto;
- register int cl;
- {
- asm
- {
- subi.w #1,cl
- bcs eblitl
- lblitl:
- move.l (qfrom)+,(qto)+
- dbf cl,lblitl
- eblitl:
- nop
- }
- return qto;
- }
-
-
- long *_blitlz(qfrom, qto, cl)
- register long *qfrom, *qto;
- register int cl;
- {
- asm
- {
- subi.w #1,cl
- bcs eblitlz
- lblitlz:
- move.l (qfrom)+,(qto)+
- dbf cl,lblitlz
- eblitlz:
- clr.b (qto)
- }
- return qto;
- }
-
- char *_blitc(ch, qto, cb)
- register char *qto;
- register int ch, cb;
- {
- asm
- {
- subi.w #1,cb
- bcs eblitc
-
- lblitc:
- move.b ch,(qto)+
- dbf cb,lblitc
- eblitc:
- nop
- }
- return qto;
- }
-
- char *_blitcz(ch, qto, cb)
- register char *qto;
- register int ch, cb;
- {
- asm
- {
- subi.w #1,cb
- bcs eblitbz
- lblitcz:
- move.b ch,(qto)+
- dbf cb,lblitcz
- eblitbz:
- clr.b (qto)
- }
- return qto;
- }
-
- char *_blitzb(qto, cb)
- register char *qto;
- register int cb;
- {
- asm
- {
- subi.w #1,cb
- bcs eblitzb
- lblitzb:
- clr.b (qto)+
- dbf cb,lblitzb
- eblitzb:
- nop
- }
- return qto;
- }
-
- int *_blitzw(qto, cw)
- register int *qto;
- register int cw;
- {
- asm
- {
- subi.w #1,cw
- bcs eblitzw
- lblitzw:
- clr.w (qto)+
- dbf cw,lblitzw
- eblitzw:
- nop
- }
- return qto;
- }
-
- long *_blitzl(qto, cl)
- register long *qto;
- register int cl;
- {
- asm
- {
- subi.w #1,cl
- bcs eblitzl
- lblitzl:
- clr.l (qto)+
- dbf cl,lblitzl
- eblitzl:
- nop
- }
- return qto;
- }
-
- long *_blitcls(qto)
- register long *qto;
- {
- asm
- {
- move.w #1999,D0
- lblitcls:
- clr.l (qto)+
- clr.l (qto)+
- clr.l (qto)+
- clr.l (qto)+
- dbf D0,lblitcls
- }
- return qto;
- }
-
- long *_blitscr(qfrom,qto)
- register long *qfrom,*qto;
- {
- asm
- {
- move.w #1999,D0
- lblitscr:
- move.l (qfrom)+,(qto)+
- move.l (qfrom)+,(qto)+
- move.l (qfrom)+,(qto)+
- move.l (qfrom)+,(qto)+
- dbf D0,lblitscr
- }
- return qto;
- }
-
-
-